<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Strict//EN">
<HTML>
<HEAD>
<TITLE>What's new in SP?</TITLE>
</HEAD>
<BODY>
<H1>What's new?</H1>
<P>
This document describes recent user-visible changes in SP.  Bug fixes
are not described.

<H2>Version 1.3</H2>
<P>
Better <A HREF="xml.htm">support for XML</A> based on the Web SGML
Adaptations Annex to ISO 8879.
<P>
New <A HREF="sx.htm">SX</A> application that converts SGML to XML.
<P>
The architecture engine has been updated to match HyTime 2nd Edition
(This means that you must use
<CODE>&lt;?IS10744 ArcBase <VAR>arch</VAR>&gt;</CODE>
rather than
<CODE>&lt;?ArcBase <VAR>arch</VAR>&gt;</CODE>.)

<H2>Version 1.2</H2>
<P>
The Extended Naming Rules TC is supported.
The extensions supported in external concrete syntaxes have been
changed for compatibility with this.
<P>
The handling of character sets in the multi-byte version is more
sophisticated.
The <A HREF="charset.htm">character sets</A> HTML page
gives more information.
<P>
SP has built-in knowledge of many <A HREF="sgmldecl.htm#charset">more
base character sets</A>.
<P>
nsgmls will report empty elements if the <CODE>-oempty</CODE>
option is used.
<P>
DTD-less parsing is possible, by using the <CODE>-wno-valid</CODE>
option to allow undefined elements and attributes.  This allows
parsing of well-formed XML documents, whether or not valid.

<H2>Version 1.1</H2>
<P>
There is now generalized support for <A
HREF="archform.htm">architectural form processing</A>.
<P>
Documentation is now in HTML format.
<P>
A BASE catalog entry can be used to specify a base system identifier
for resolving relative storage object identifiers occurring in the
catalog.
<P>
A LITERAL storage manager is now provided.
<P>
Programs have a -E option that sets the maximum number of errors.
<P>
A DELEGATE catalog entry allows distributed resolution of public
identifiers.
<P>
nsgmls has a -B (batch mode) option that allows you to parse multiple
documents with a single invocation of nsgmls.
<P>
In nsgmls the -c option now specifies a catalog as it does in spam and
sgmlnorm, in addition to the -m option that previously did this.
<P>
The <SAMP>-n</SAMP> option has been replaced by a
<SAMP>-onotation-sysid</SAMP> which applies to nsgmls only, and a
<SAMP>-wnotation-sysid</SAMP> which applies generally.
<P>
SP can be built as a DLL under Win32.

<H2>Version 1.0</H2>
<P>
The syntax of system identifiers has completely changed.  The new
syntax is based on the syntax of formal system identifiers defined in
ISO/IEC 10744 (HyTime) Technical Corrigendum 1, Annex D.
<P>
The NSGMLS_CODE environment variable has been renamed to SP_BCTF.
nsgmls has a -b option to specify the bit combination transformation
format to be used for output.
<P>
A list of directories in which files specified in system identifiers
should be searched for can be specified using the environment variable
SGML_SEARCH_PATH or the option -D.
<P>
Individual SYSTEM identifiers in external identifiers can be
overridden using SYSTEM entries in the catalog.
<P>
The OVERRIDE catalog entry now takes a YES/NO argument.  (This change
was required for conformance to the SGML Open TR.)  It applies to each
entry individually rather than to the entire catalog.
<P>
The -w options of nsgmls and spam have been enhanced.  In spam, the -w
option takes an argument as with nsgmls.  There are new warnings for
minimized start and end tags (-wunclosed, -wempty, -wnet and
-wmin-tag); for unused short reference maps (-wunused-maps); for
unused parameter entities (-wunused-param).  -wall now doesn't include
those warnings that are about conditions that, in the opinion of the
author, there is no reason to avoid.  A warning can be turned off by
using its name prefixed by no-; thus -wmin-tag -wno-net is equivalent
to -wunclosed -wempty.  The -w option is also used to turn off errors:
-wno-idref replaces the -x option; -wno-significant replaces the -X
option.
<P>
In the output of nsgmls, characters that cannot be represented in the
encoding translation specified by the NSGMLS_BCTF environment variable
are represented using an escape sequence of the form \#N; when N is a
decimal integer.
<P>
In the multi-byte versions of nsgmls there are new BCTFs is8859-N
for N = 1,...,9.
<P>
There is a -o option to nsgmls which makes it output additional
information: -oentity outputs information about all entities; -oid
distinguish attributes with a declared value of id; -oincluded
distinguishes included subelements.
<P>
nsgmls now automatically searches for a catalog entry file called
"catalog" in the same place as the document entity.  Note that when
the document entity is specified with a URL, this matches the
behaviour of Panorama.
<P>
A catalog entry file can contain CATALOG entries specifying additional
catalog entry files.  This matches the behaviour of Panorama.
<P>
The parser can now make available to an application complete
information about the markup of prologs and SGML declarations.  It
would now be possible, for example, to use SP to write a DTD editor.
spam exploits this to a limited extent: if the -p option is specified
twice, then parameter entity references between declarations will be
expanded; the -mreserved option puts all reserved names in upper-case;
with the -mshortref option short reference use declarations and short
reference mapping declarations will be removed; attribute
specification lists in data attribute specifications in entity
declarations can be normalized like attribute specification lists in
start-tags; with -mms it resolves IGNORE/INCLUDE marked sections.
<P>
nsgmls has a -C option which causes the command line filenames to be
treated as a catalog whose DOCUMENT entry specifies the document
entity.
<P>
nsgmls has a -n option which causes it to generate system identifiers
for notations in the same way as it does for entities.
<P>
spam now has a -f option like nsgmls.
<P>
The interface between the parser and entity manager has been
redesigned so that the entity manager can be used independently of the
parser.  This is exploited by a new program called spent that prints
an entity with a specified system identifier on the standard output.
<P>
In most cases, a Control-Z occurring as the last byte in a file will
be stripped.  This is controlled by the zapeof attribute in formal
system identifiers.

<H2>Version 0.4</H2>
<P>
External concrete syntaxes, character sets and capacity sets are
supported using PUBLIC entries in catalog files.  The multicode code
core and reference syntaxes are no longer built-in.  Only a few
character sets are now built-in.
<P>
Within external concrete syntaxes, various useful extensions are
permitted.  In particular, an ellipsis syntax is allowed for the
specification of name characters and single character short
references.  It is now practical to specify tens of thousands of
additional name characters.
<P>
The default SGML declaration is more permissive.
<P>
nsgmls has a -x option that inhibits checking of idrefs.
<P>
nsgmls has a -w option that can enable additional warnings.  In
particular, -wmixed will warn about mixed content models that do not
allow #pcdata everywhere.
<P>
The meaning of the f command in the output of nsgmls has changed
slightly.  It now gives the effective system identifier of the entity.
<P>
The functionality of the rast program has been merged into the nsgmls
program and the rast program has been removed.  The -t option makes
nsgmls generate a RAST result.
<P>
spam has a -l option that uses lower-case for added names that were
subject to upper-case substitution.
<P>
spam has a -mcurrent option that adds omitted attribute specifications
for current attributes.
<P>
<ADDRESS>
James Clark<BR>
jjc@jclark.com
</ADDRESS>
</BODY>
</HTML>
